[PHP] Arrays and replace

Pagina: 1
Acties:

Onderwerpen


  • rmfloris
  • Registratie: Maart 2002
  • Laatst online: 22-11-2024

rmfloris

Kowalski: Kaboeeem??

Topicstarter
Ik heb het volgende:
- tekst ($text)
- array met namen ($naam_array)
- array met ID's van de namen ($id_array)

Ik zou de tekst ($text) graag willen doorzoeken op aanwezigheid van de namen uit de array ($naam_array) en deze vervangen door een link in het formaat van:
code:
1
<a href=test.php?id=$id>Naam</a>


De $id komt dus uit de $id_array en de naam waar hij op zoekt moet blijven staan.

Ik heb dit geprobeerd met preg_replace, maar deze doet moeilijk bij het gebruik van arrays
Ook str_replace werkt alleen als je array door array vervangt en niet als je array door array+tekst vervangt.

Hopelijk kan iemand mij hiermee verder helpen. Mocht het niet duidelijk zijn, vraag gerust.

Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl


  • FireWood
  • Registratie: Augustus 2003
  • Laatst online: 21-09 11:11
Beetje snel zoekwerk:

Ga naar www.php.net
zoek op array search

Noobs don't use "F1", Pro's do, but they can't find the information they needed


  • rmfloris
  • Registratie: Maart 2002
  • Laatst online: 22-11-2024

rmfloris

Kowalski: Kaboeeem??

Topicstarter
Helaas,

array_search zoekt binnen een array, ik wil juist de waarde uit een array zoeken in een stuk tekst en vervangen door dezelfde lijn in een andere array. Dit kan normaal dmv str_replace. Maar zodra je er tekst omheen wilt zetten (de link in mijn geval) werkt de str_replace niet.

Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Gewoon een array maken met de id's als key, en de naam als value, en daar doorheen stappen. ;)
PHP:
1
2
3
4
$arr = array(31 => 'foo', 4 => 'bar', 5 => 'blaat', 52 => 'nogwat');
foreach ($arr as $id => $naam) {
  $text = str_replace($naam, '<a href="test.php?id=' . $id . '">' . $naam .'</a>', $text);
}


Edit: de logica hierachter: naam en id zijn functioneel aan elkaar verbonden, dus die horen gewoon in één array, niet gescheiden in twee. :)

[ Voor 22% gewijzigd door NMe op 21-09-2005 22:28 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • vriesdude
  • Registratie: Februari 2002
  • Laatst online: 19-09 19:14
Eens met -NMe-, maar ik had ondertussen al wat geschreven om het met aparte arrays voor elkaar te kunnen krijgen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

$tekst = "En toen ging Piet naar Klaas en kwam onderweg Jan tegen";

$namen[] = "Piet";
$namen[] = "Klaas";
$namen[] = "Jan";

$id[] = "4";
$id[] = "6";
$id[] = "9";

for ($i = 0; $i < sizeof($namen); $i++) {
    $tekst = str_replace($namen[$i], "<a href=test.php?id=".$id[$i]."\">".$namen[$i]."</a>", $tekst);
}

echo $tekst;

?>


resultaat:
code:
1
En toen ging <a href=test.php?id=4">Piet</a> naar <a href=test.php?id=6">Klaas</a> en kwam onderweg <a href=test.php?id=9">Jan</a> tegen

[ Voor 91% gewijzigd door vriesdude op 21-09-2005 22:48 ]

/dev/null