webForumDet fria alternativet

Snabb fråga preg_match

PHPur PHP

13 svar · 735 visningar · startad av Fuel

Medlem sedan okt. 20001 285 inlägg
Frågan#1

Det ser ut så här

preg_match( '|blahblah(.*)$|mi'.. etc

vad är (.*)$|mi ? i är väl case insensitive

Medlem sedan mars 20007 896 inlägg
#2

'|' är endast avgränsare. Som du ser börjar mönstret även med detta tecken. '/' eller '|' är valigt förekommande.

'm' talar om att det gäller över flera rader, multiline.

'i' talar om att mönstret är case insensitive.

'$' representerar slutet på raden i det här fallet, i och med att 'm' används.

'(.*)' är själva mönstret, dvs. alla tecken utom för ny rad (dvs. '\n').

Medlem sedan okt. 20001 285 inlägg
#3

Stabilt ! tack ! :birp

Medlem sedan okt. 20001 285 inlägg
#4

ehh .. har kört fast .. ska ta reda på om en sträng har 2 slash framför sig och ta ut det .. ska kolla om en fil ligger i ett dir eller i roten

if (preg_match( '|/(.*)/$|i', $module_data['File'], $found_dir ))
{
	$my_dir = $found_dir[1];
	$bbb = str_replace("/".$my_dir."/","",$module_data['File']);
}
else
{
	$my_dir = "";
	$bbb = str_replace("/","",$module_data['File']);
}
			
echo "<p><b>" . $my_dir . '</b> ' . $bbb . "</p>";
Medlem sedan sep. 20005 700 inlägg
#5

Escape:a dina / med \ före.
Alltså '|\/(.*)\/$|i'

Medlem sedan okt. 20001 285 inlägg
#6

Nix .. inte funka

Medlem sedan sep. 20005 700 inlägg
#7

Alltså två slash framför sig? |\/\/(.*)\/$|i
Men det är nästan lättare om du ger exempel på indata och vad i strängen som den ska matcha.

Medlem sedan okt. 20001 285 inlägg
#8

funka icke..

$module_data['File'] är exempelvis

/2/index.php
/mapp/fil.php
/ettscript.php
/oj/hej.php

..etc...

Ska då bli..

2 index.php
mapp fil.php
ettscript.php
oj hej.php

Medlem sedan mars 20034 471 inlägg
#9

... (Glöm det, Fuel förtydligade.)

Medlem sedan okt. 20001 285 inlägg
#10

Alltså .. jag ska kolla om en fil har 2 slash framför sig dvs ligger i en mapp och ta ut mappnamnet annars så tar jag bara bort första slashet dvs den ligger i roten.

$module_data['File'] ser ut precis så här ex. /mapp/fil.php eller /ettscript.php

Edit: ok aasah ;)

Medlem sedan sep. 20005 700 inlägg
#11

'|(.+)/(.+)$|i'

Medlem sedan okt. 20001 285 inlägg
#12

Nästan ..

|\/(.+)/(.+)$|i

Funkade :) tack för hjälpen

Medlem sedan sep. 20005 700 inlägg
#13

Ja, förlåt, missade den första. Missade även att escapea slashen i mitten :)

Medlem sedan okt. 20001 285 inlägg
#14

Super .. vad vore världen utan wF ? :birp

122 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
119 ms — hämta tråd, inlägg och bilagor (db)