Gebruik van een variabele uit het replacement halen bij een preg_replace

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nkamp Kamp van de

nkamp Kamp van de

11/12/2016 13:45:17
Quote Anchor link
Hallo,

Een beetje lastig te omschrijven maar ik maak bij joomla gebruik van een plugin en die wil ik iets aanpassen.

Dit is een stukje code wat goed functioneert:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$regex
= "#((\d*) (.{3}).)( (\d{1,2}):(\d{1,2}):)(.*)(\s\-\s)(.*)#";
$replacement = '<td>$5:$6</td><td>$7</td><td>$8</td><td>$9</td>';
$insert_str = '<a href="'.$item->link.'" target="_blank">  <i class="icon-cogs icon-info" style="color: white"></i> </a>';
                    
$content_buffer .=  $this->_str_insert(preg_replace($regex, $replacement, $item->title), $rssfilter, $insert_str);
?>


In de $replacement zijn variabelen gedefineerd en wat ik nu wil: wat staat er nu 'precies' in $8 en $9?
Dus voor test bv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $8; //resultaat is dan bv. WSV DS 1 of WSV HR 1
?>

Is dit mogelijk of moet je het dan met een array gaan doen?
Gewijzigd op 11/12/2016 13:47:43 door Nkamp Kamp van de
 
PHP hulp

PHP hulp

27/11/2024 05:44:17
 
Marthijn Buijs

Marthijn Buijs

11/12/2016 14:07:27
Quote Anchor link
Cijfers met een dollarteken ervoor kan je volgens mij alleen gebruiken in de preg_replace-functie. Verder kan je volgens mij geen PHP variabelen hebben die alleen uit cijfer(s) bestaan.
 
Ivo P

Ivo P

11/12/2016 14:50:44
Quote Anchor link
$8 is de 8e match in een regex.

als simpler voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$email
= '[email protected]';

$b = preg_replace('#^(.*)@(.*)$#', 'voor: $1 na @: $2', $email);

echo $b;
?>


de eerste match heb je op het stuk voor het @. In dit geval dus "info"
de 2e match het hele stuk na de @, dus "phphulp.nl"

En zo nummert dat verder.

Wordt wel wat onduidelijk bij herhalingen in de regex, of bij regexen die ook nog non-matching stukken gebruikt of sowieso haakjes in de zoektekst heeft staan.
 
Nkamp Kamp van de

nkamp Kamp van de

11/12/2016 15:12:03
Quote Anchor link
Ah dat helpt mij al verder.
Bij de laatste reactie is het gedaan via het @ teken. Ipv. het @ teken heb ik het - teken gebruikt want het gaat tussen twee teams. Nu krijg ik met wat er voor het - staat ook nog andere gegevens.

Nu moet ik de reguliere expressie zo aanpassen dat de zoek opdtracht pas start vanaf <td>, want om dit stukje string gaat het nog

<td>WSV DS 1</td><td>- tegenstander DS 1</td>
of
<td>tegenstander DS 1</td><td>- WSV DS 1</td>
 
Ivo P

Ivo P

11/12/2016 15:19:16
Quote Anchor link
Je moet uitgaan van 1 of meer voorbeelden van de input string, en dan daarna wat je met de output wilt gaan doen.

Voor een ander is het namelijk best lastig om een regex te lezen en te begrijpen als er niet voorbeelden van de invoer bij staan.
 



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.