Eerste woord verwijderen/woord voor -

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Jelle Hi

Jelle Hi

24/01/2017 15:09:11
Quote Anchor link
Hi,

Ik heb in m'n database een lap tekst, welke begint met een plaatsaanduiding (zijn nieuwsartikelen) a la 'PLAATSNAAM -'. Nu wil ik dat die plaatsnaam een bepaalde stijl heeft. Via CSS is het me niet gelukt en kon ik online ook niets vinden.

Daarom had ik het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
                    <?php
                        $content
= $article['content'];
                        $arr = explode(' ',trim($content));
                        echo '<strong style="color: #e9443c;">'.$arr[0].'</strong> '; // will print Test
                        
                        $words = explode( ' ', $content);
                        array_shift( $words);
                        $content = implode( ' ', $words);
                        
                        echo $content;
                ?>


Echter gaat dat in sommige gevallen mis. Sommige artikelen hebben geen plaatsaanduiding, of hebben een plaatsaanduiding waarvan de plaats uit twee 'woorden bestaat' (DE PLAATS -). Ik heb echter geen idee hoe ik dat moet opvangen.. De syntax is wel vast 'PLAATSNAAM - '.
 
PHP hulp

PHP hulp

25/11/2024 12:45:37
 
Ward van der Put
Moderator

Ward van der Put

24/01/2017 15:15:39
Quote Anchor link
Dat kan bijvoorbeeld door de string te splitsen op het eerste streepje met spaties.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$content
= explode(' - ', $content, 2);
?>

Hierna bevat $content[0] de plaatsnaam en $content[1] de rest van het bericht.
Deze kun je vervolgens recombineren met extra CSS, bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$content
= explode(' - ', $content, 2);
$content = '<span class="plaatsnaam">' . $content[0] . '<span> - ' . $content[1];
?>
 
- SanThe -

- SanThe -

24/01/2017 15:20:59
Quote Anchor link
Ward van der Put op 24/01/2017 15:15:39:
en $content[1] de rest van het bericht.


Uiteraard alleen als er niet nog een - in voorkomt.
 
Jelle Hi

Jelle Hi

24/01/2017 15:30:04
Quote Anchor link
- SanThe - op 24/01/2017 15:20:59:
Uiteraard alleen als er niet nog een - in voorkomt.


Inderdaad.. ik had ook al gedacht aan een selectie op het streepje, maar dan loop ik hier tegenaan...
 
- SanThe -

- SanThe -

24/01/2017 15:33:29
 
Ward van der Put
Moderator

Ward van der Put

24/01/2017 15:52:31
Quote Anchor link
Jelle Hi op 24/01/2017 15:30:04:
- SanThe - op 24/01/2017 15:20:59:
Uiteraard alleen als er niet nog een - in voorkomt.


Inderdaad.. ik had ook al gedacht aan een selectie op het streepje, maar dan loop ik hier tegenaan...

Nee hoor, daarom heb ik (a) de derde parameter $limit van explode() op 2 gezet, zodat je maar 2 array-elementen krijgt, en (b) de string gesplitst op ' - ' in plaats van '-', zodat plaatsnamen met een - worden genegeerd. Uiteraard kan er dan altijd nog een uitzonderingsgeval optreden, maar daarvoor kun je dan nog een nette exception inbouwen.
Gewijzigd op 24/01/2017 15:53:10 door Ward van der Put
 
- SanThe -

- SanThe -

24/01/2017 15:55:13
Quote Anchor link
Ward van der Put op 24/01/2017 15:52:31:
... daarom heb ik (a) de derde parameter $limit van explode() op 2 gezet, zodat je maar 2 array-elementen krijgt ...


Niet opgemerkt, maar inderdaad een goede oplossing.
 
Adoptive Solution

Adoptive Solution

24/01/2017 17:07:18
Quote Anchor link
Dit werkt met en zonder streepje. Het test op hoofdletters. Uitzonderingen controleren zoals plaatsnamen met 's- moeten worden toegevoegd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php

$tekst
  = 'CURABITUR RISUS DER - Blandit tempus porttitor.';

echo '<p>' . $tekst . '</p>' . PHP_EOL;

$content = explode(' ', $tekst, 4);

echo '<pre>';

print_r( $content );

echo '</pre>';

for ( $i = 0 ; $i < count( $content ) ; $i++ ) {
    if ( $content[$i] == ctype_upper( $content[$i] ) ) {
        $content[$i] = '<span style="color : red;">' . $content[$i] . '</span>';
        echo '<p style="color : red;">' . $content[$i] . '</p>';
    }
}


echo '<p>';

for ( $i = 0 ; $i < count( $content ) ; $i++ ) {
    echo $content[$i] . ' ';
}


echo '</p>';
?>
 
Ivo P

Ivo P

24/01/2017 17:46:53
Quote Anchor link
Ik zou aan een regex denken
(ongetest):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$tekst
  = "'S-HERTOGEN DEN BOSCH - Blandit tempus porttitor.";

if(preg_match('#^(?P<plaats>[A-Z\' -]+) - (?P<tekst>.*)#', $tekst, $aMatches)) {
  
   echo '<span class="first">'.htmlspecialchars($aMatches['plaats']) . '</span>';
   echo htmlspecialchars($aMatches['tekst']);
}

else {
  echo htmlspecialchars($tekst);
}


?>


Toevoeging op 24/01/2017 17:51:40:

uitleg van de regex:

^ vanaf het begin van de string in $tekst

(?P<xxxxx>) sla het resultaat op in $aMatches['xxxxx']

[A-Z\' -]: een serie karakters om uit te kiezen: hoofdletters A tm Z (A-Z)
: een ', een spatie en een koppel teken

+ : daarvan zoeken we 1 of meer tekens

- : Daarachter moet een spatie, koppelteken spatie komen

(?P<tekst>.*) alle tekens die daarna nog komen opslaan in $aMatches['tekst']
Gewijzigd op 24/01/2017 17:51:57 door Ivo P
 
Adoptive Solution

Adoptive Solution

24/01/2017 18:42:05
Quote Anchor link
Hier een lijst met plaatsnamen :

https://home.kpn.nl/pagklein/almanak.html

Met dit kan je zo'n beetje alles er uit krijgen :

't GEULLE Almere-Stad 's-Hertogenbosch BLaNDIT tempus porttitor.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for ( $i = 0 ; $i < count( $content ) ; $i++ ) {
    if ( $content[$i] == "'t" || ( strpos( $content[$i] , "s-" ) == TRUE ) || ( strpos( $content[$i] , "-" ) == TRUE ) ) {
        $content[$i] = '<span style="color : red;">' . $content[$i] . '</span>';
        echo '<p style="color : red;">' . $content[$i] . '</p>';
    } elseif ( $content[$i] == ctype_upper( $content[$i] ) ) {
        $content[$i] = '<span style="color : red;">' . $content[$i] . '</span>';
        echo '<p style="color : red;">' . $content[$i] . '</p>';
    }

echo '<p>';

for ( $i = 0 ; $i < count( $content ) ; $i++ ) {
    echo $content[$i] . ' ';
}
echo '</p>';

}
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.