Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmiana znaku tylko w obrębie znacznika.
matid
post
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Pisze moją stronę zgodnie z XHTML 1.0 Transitional, co nie pozwala mi używać linków tej postaci: ?id=1&id2=2 natomiast należy je zastępować takimi: ?id=1&amp;id2=2. A teraz pytanie. Jak napisać kod który zamienia znak & na &amp; ale tylko w obrębie znacznika <a> a dokładniej w polu href ? Bo mam np. taki kod:
Kod
<a href="?id=1&id2=2">アニメ (&#12450 &#12491 &#12513)</a>  [w nawiasie jest forma ASCII bez średników aby forum tego nie zamieniło ]

A powinno to zamienić na:
Kod
<a href="?id=1&amp;id2=2">アニメ (&#12450 &#12491 &#12513)</a> [w nawiasie jest forma ASCII bez średników aby forum tego nie zamieniło ]

Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
BzikOS
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

Ostrzeżenie: (0%)
-----


Może tak:

[php:1:014571b0bb]<?php
$str = '<a href="?id=1&id2=2">?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (&#12450 &#12491 &#12513)</a>';

$str = preg_replace( '/(<a .*?>)/ise', 'str_replace("&", "&amp;", "1");', $str );
echo( $str );
?>[/php:1:014571b0bb]
Go to the top of the page
+Quote Post
matid
post
Post #3





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Dzieki, działa, ale trochę się pomyliłem w założeniach. Teraz, jeśli możesz pomóc przydałby mi się kod który zamieni wszystkie & na &amp; ale nie zamieni takich po których występuje # i cyfry, np.
&#12450
Go to the top of the page
+Quote Post
BzikOS
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

Ostrzeżenie: (0%)
-----


Jeżeli dobrze zrozumiałem, to to powinno załatwić sprawę:

[php:1:9632866916]<?php
$str = preg_replace( '/(<a .*?>)/ise', 'preg_replace("/&+([^#0-9])/", "&amp;$1", "1");', $str );
?>[/php:1:9632866916]
Go to the top of the page
+Quote Post
matid
post
Post #5





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Trochę nie o to chodziło, bo to juz nie miało być tylko w obrębie <a>
Ale kod już przerobiłem sam:
[php:1:5696df3118]
<?
$str = preg_replace("/&+([^#0-9])/", "&amp;$1",$str);
?>
[/php:1:5696df3118]

I przy okazji mam pytanie:
Jak wyrzucić określone znaki w obrębie znacznika?
Albo lepiej zamienić je na inne ?
Bo mam takie coś:
Kod
[ulist]

[ * ] test

[ * ] test

[/ulist]

Mój skrypt zamieni to na takie coś:
Kod
<ul>

<li>test<br />

<li>test<br />

</ul>

A jak należy zrobić aby kod wyjściowy wyglądał tak:
Kod
<ul>

<li>test</li>

<li>test</li>

</ul>

(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
matid
post
Post #6





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Nikt nie wie jak rozwiązac mój problem ?
Go to the top of the page
+Quote Post
BzikOS
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

Ostrzeżenie: (0%)
-----


[php:1:d52feef492]<?php
$str = "[ulist]
[ * ] test
[ * ] test
[/ulist]";

$str = preg_replace( "/[ulist](.*?)[/ulist]/ise", 'preg_replace( "/[ * ] (.*?)rn/is", "<li>$1</li>rn", "<ul>1</ul>")', $str );
?>[/php:1:d52feef492]

Tylko, że to tyczy się tego konkretnego przykładu.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 18:45