webForumDet fria alternativet

regexp problemas

PHP

18 svar · 329 visningar · startad av nkrantz

Medlem sedan apr. 2002830 inlägg
Frågan#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

Medlem sedan aug. 20002 975 inlägg
#2

Testa med:

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

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

Medlem sedan apr. 2002830 inlägg
#4

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

Medlem sedan aug. 20002 975 inlägg
#5

nkrantz skrev:

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

Tror jag också :)

Medlem sedan apr. 2002830 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?

Medlem sedan nov. 20017 144 inlägg
Medlem sedan apr. 2002830 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...

Medlem sedan nov. 20017 144 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";
}
Medlem sedan apr. 2002830 inlägg
#10

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

Medlem sedan aug. 20002 975 inlägg
#11

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

Medlem sedan nov. 20017 144 inlägg
#12

Kom ihåg backslasharna ;)

Medlem sedan apr. 2002830 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)

Medlem sedan aug. 20002 975 inlägg
#14

Testa:

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

$matches är en tvådimensionell array.

Medlem sedan nov. 20017 144 inlägg
#15

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

Medlem sedan apr. 2002830 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

Medlem sedan apr. 2002830 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

Medlem sedan apr. 2002830 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";
}

Medlem sedan aug. 20002 975 inlägg
#19

Blev lite galet i tidigare inlägg.

if (preg_match_all("/(<\\?|\\s)t\\(\\d+\\)(\\?>|)/", $content, $matches)) {
261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)