Archief - Array zoeken in string

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Rusko

Legacy Member
Dag iedereen, ik ben een systeem aan het maken met tags, ik zou elke tag die mogelijk is in een array zetten en dan een tekst checken of minstens 1 van de waarden in de array, ook in de tekst zit (zodat ik niet telkens heel mijn code moet aanpassen wanneer ik een nieuwe tag heb)

bv.
Code:
<?php
$text =  "tag1 blabla";
$tags = array("tag1", "tag2");

if(!strpos(tag[0],$text) && !strpos(tag[1],$text)) //dit moet dus aangepast worden
{
...
}
?>

Bij die if-statement zou dat dus automatisch moeten gebeuren zodat ik niet steeds heel mijn code moet aanpassen bij een kleine wijziging van een tag :)

Dieterg

Legacy Member
Kan je iets specifieker zijn? Ik snap niet goed wat je bedoeld? Krijg je met bovenstaande code geen php errors?

Code:
$text = "tag1 blabla tag2";
$tags = array('tag1','tag2');

if(strpos($tags[0], $text) && strpos($tags[1], $text))
{

}

Rusko

Legacy Member
Mam zei:
Kan je iets specifieker zijn? Ik snap niet goed wat je bedoeld? Krijg je met bovenstaande code geen php errors?

Code:
$text = "tag1 blabla tag2";
$tags = array('tag1','tag2');

if(strpos($tags[0], $text) && strpos($tags[1], $text))
{

}

Kan wel zijn, heb het niet getest, die if statement zou moeten doorlopen of er een waarde van array $tags in $text zit dus:
Code:
if(tags[0] zit niet in $text && tags[1] zit niet in $text en ...)
{
return true;
}

Als geen enkele waarde uit de array in $text zit, retourneert hij true en stopt het daar dus. Als er geen enkele tag in de tekst zit doorloopt hij anders heel de code en dat is tijdverlies en nutteloos ;)

-brucken-

Legacy Member
Op deze manier kan je zien welke tags in uw tekst voorkomen.
Indien een tag voorkomt dan doet hij daarvan een echo.

Code:
$text =  "tag1 blabla";
$tags = array("tag1", "tag2");
foreach($tags as $tag)
{
	if(strstr($text, $tag) != false) echo $tag;	
}

dJeez

Legacy Member
Maar die code klopt niet echt hé (zowel de originele als alle voorbeelden totnogtoe), want dan zal "detag1" ook matchen als je op "tag1" zoekt, net zoals "detag1ofzo", en dat zal wel niet de bedoeling zijn vermoed ik.

Afhankelijk van de use case (meer specifiek wat $text precies bevat) zou iets als volgt moeten volstaan :

PHP:
$text =  "tag1 blabla detag2 tag3enzoiets tag3.";
$tags = array("tag1", "tag2", "tag3");

$found = false;
foreach ($tags as $tag) {
  $pattern = "/\b" . preg_quote($tag, '/') . "\b/i";
  $found = preg_match($pattern, $text);
  if ($found) break;
}
if (!$found) {
  // Uw huidige code als er geen tag gevonden werd
}

Nu stopt de loop na de eerste gevonden tag. Stel nu dat je iets met de gevonden tags zou willen doen kan je die in een array opslaan waar nu de break staat (en die break dan ook verwijderen uiteraard :p).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan