webForumDet fria alternativet

regexp problemas

18 svar · 329 visningar · startad av nkrantz

nkrantzMedlem sedan apr. 2002755 inlägg
#1

Kan någon guru förklara hur jag skall göra för att hitta:

<?t(12)?> eller t(12) i en sträng.

Det jag har nu, [t]+\([0-9]+[\)] hittar även test(12) och det vill jag inte...

Någon som vet?

// Nippe

MatteMedlem sedan aug. 20002 970 inlägg
#2

Testa med:

<\?|\s)t\(\d+\)(\?>|)
nkrantzMedlem sedan apr. 2002755 inlägg
#3

Det saknas en ( och jag får inte in den någonstans så att det funkar... Eller?

nkrantzMedlem sedan apr. 2002755 inlägg
#4

(<\?|\s)t\(\d+\)(\?>|) skulle det vara tror jag...

MatteMedlem sedan aug. 20002 970 inlägg
#5

nkrantz skrev:

(<\?|\s)t\(\d+\)(\?>|) skulle det vara tror jag...

Tror jag också :)

nkrantzMedlem sedan apr. 2002755 inlägg
#6

Får det inte att funkar:

$content = "hej hopp t(12) hejekje";

if (ereg("(<\?|\s)t\(\d+\)(\?>|)", $content))
{
	echo "match";
}
else
{
	echo "no match";
}

Den säger no match. Men om jag har errors påslaget så säger den:
Warning: ereg(): REG_EMPTY in /XXX/XXX/XXX/article.pages.php on line 47

Vad göra?

Jesper TMedlem sedan nov. 20017 058 inlägg
nkrantzMedlem sedan apr. 2002755 inlägg
#8

Jo, men pattern funkar, men jag får inte min kod att funka... Så, det verkar om om jag använder fel funktion (ereg) eller nåt sånt...

Jesper TMedlem sedan nov. 20017 058 inlägg
#9

Och med preg_match() då?

$content = "hej hopp t(12) hejekje";

if (preg_match("(<\?|\s)t\(\d+\)(\?>|)", $content)) {
   echo "match";
} else {
   echo "no match";
}
nkrantzMedlem sedan apr. 2002755 inlägg
#10

Med preg_match blir det: Warning: Unknown modifier 't' in /home/nap46/wwwserver/ac/article.pages.php on line 47

MatteMedlem sedan aug. 20002 970 inlägg
#11

Vill du kolla om mönstret finns, eller vad det innehåller ?
Kan det finnas på flera ställen i texten ?

Jesper TMedlem sedan nov. 20017 058 inlägg
#12

Kom ihåg backslasharna ;)

nkrantzMedlem sedan apr. 2002755 inlägg
#13

Matte: Jag vill kolla om mönstret finns, det kan finnas på flera ställen.

Jesper T: Japp ;) (Fast om man kör KOD ist för PHP så funkar det.. verkar det som, för mina backslashs funkar i mitt inlägg ovan)

MatteMedlem sedan aug. 20002 970 inlägg
#14

Testa:

if (preg_match_all("/(<\\?|\\s)\\t(\\d+)(\\?>|)/", $content, $matches)) {

$matches är en tvådimensionell array.

Jesper TMedlem sedan nov. 20017 058 inlägg
#15

Ja, ntg mysko är det. När jag bifogade i [kod]-taggar så försvann de ju.
Skall kollas.

nkrantzMedlem sedan apr. 2002755 inlägg
#16

Testade först med din pattern, den gick igenom preg funktionen men matchade inte (inte heller när jag testade den på webeye.nu)

Bytte till min pattern och då fick jag Warning: Unknown modifier 't' in /home/nap46/wwwserver/ac/article.pages.php on line 47

nkrantzMedlem sedan apr. 2002755 inlägg
#17

Varför säger den att jag inte har någon reg?

Warning: ereg(): REG_EMPTY

Jag har ju en reg som funkar!!!

$pattern = "(<\?|\s)t\(\d+\)(\?>|)";
$content = "hej hopp <?t(12)?> hejekje t(33)";

if (ereg ($pattern, $content))
{
	echo "found";
} 
else
{
	echo "not found";
}

Om jag ändrar $pattern till hej så funkar det... Pattern går igenom testen på webeye...

// Nippe

nkrantzMedlem sedan apr. 2002755 inlägg
#18

Ibland undrar jag var jag lägger min hjärna! :x

$pattern = "/(<\?|\s)t\(\d+\)(\?>|)/";
$content = "hej hopp <?t(12)?> hejekje";

if (preg_match ($pattern, $content))
{
echo "found";
}
else
{
echo "not found";
}

MatteMedlem sedan aug. 20002 970 inlägg
#19

Blev lite galet i tidigare inlägg.

if (preg_match_all("/(<\\?|\\s)t\\(\\d+\\)(\\?>|)/", $content, $matches)) {
Genererad på 382 ms · cache AV · v20260730165559-full.f96bc7eb