ugrás a tartalomhoz

str_replace

kriszrap · 2011. Jún. 20. (H), 11.10
Sziasztok!!!
Egy olyat szeretnék csinálni hogy ha chatbe linkelnek és a linket <a href=""></a> formába . Annyi bajom hogy a linkelt szövegmellé oda rakja a levágott rész is . itt a kód:

$message= str_replace('http://', '<a href="'.$message.'">'.$message.'</a>', $message);

Igy néz ki a csak be linket rakok:
http://localhost/ns1/7b/tkrisz/fal.php localhost/ns1/7b/tkrisz/fal.php

ez a rész nem kell ide :
localhost/ns1/7b/tkrisz/fal.php
 
1

Hát az úgy nem fog működni...

Blintux · 2011. Jún. 20. (H), 12.11
Hát az úgy nem fog működni, próbálkozz inkább az alábbi kóddal.
Bár csak sejtem, hogy a beírt linket, rendes, klikkelhető hivatkozássá szeretnéd alakítani. Kicsit zavaros, mit szeretnél vele :)
$m = preg_match_all('/http:\/\/[a-z0-9A-Z.]+(?(?=[\/])(.*))/', $message, $match); 

if ($m) { 
    $links = $match[0]; 
    for ($i=0; $i<$m; $i++) { 
        $message = str_replace($links[$i],'<a href="'.$links[$i].'">'.$links[$i].'</a>',$message); 
    } 
}
2

<?php $query =

kriszrap · 2011. Jún. 20. (H), 12.12

<?php
$query = mysql_query("SELECT * FROM chat ORDER by id DESC");//LIMIT 0 , 30
while($a=mysql_fetch_assoc($query)){
include "chat_datum.php";

$m = preg_match_all('/http:\/\/[a-z0-9A-Z.]+(?(?=[\/])(.*))/', $message, $match);   
  
if ($m) {   
    $links = $match[0];   
    for ($i=0; $i<$m; $i++) {   
        $message = str_replace($links[$i],'<a href="'.$links[$i].'">'.$links[$i].'</a>',$message);   
    }   
}  

$message=$a['message'];
$message= str_replace("<", "<", $message);
$message= str_replace(">", ">", $message);
//$message= str_replace('http://', '<a href="'.$message.'">'.$message.'</a>', $message);
$message= str_replace(":D","<img src='smiley/sm01.gif' alt='sm01' />", $message);
$message= str_replace(":P","<img src='smiley/sm02.gif' alt='sm02' />", $message);
$message= str_replace(":(2","<img src='smiley/sm03.gif' alt='sm03' />", $message);
$message= str_replace("[sm04]","<img src='smiley/sm04.gif' alt='sm04' />", $message);
$message= str_replace(":(","<img src='smiley/sm05.gif' alt='sm05' />", $message);
$message= str_replace(":)","<img src='smiley/sm06.gif' alt='sm06' />", $message);
$message= str_replace("[smiley_dj]","<img src='smiley/sm07.gif' alt='sm07' />", $message);
$message= str_replace("[smiley_drink]","<img src='smiley/sm08.gif' alt='sm08' />", $message);
$message= str_replace("[smiley_Good_night]","<img src='smiley/sm09.gif' alt='sm09' />", $message);
$message= str_replace("[smiley_Love]","<img src='smiley/sm10.gif' alt='sm10' />", $message);
$message= str_replace("[smiley_Hello]","<img src='smiley/sm11.gif' alt='sm10' />", $message);

echo'
#'.$a['id'].' Név: <a class="b" href="profil.php?id='.htmlspecialchars(urlencode($a['idje'])).'">'.$a['name'].'</a> ||

Mikor: '.$datum.'<br>||Üzenet: '.iconv("UTF-8", "ISO-8859-2", urldecode($message)).'||<br><br>';
}
?>
hát igy nem müködik:(
3

Nézd át

Blintux · 2011. Jún. 20. (H), 12.20
Olvasd már végig a kódodat. Kiszúrja a szemedet a hiba :P
4

mekkora ****** vagyok:)ez

kriszrap · 2011. Jún. 20. (H), 12.28
mekkora ****** vagyok:)
ez amúgy nekem új mire jó:
preg_match_all('/http:\/\/[a-z0-9A-Z.]+(?(?=[\/])(.*))/', $message, $match);
meg ezeket a karakterek soha se tudtam megfejteni hogy mi hogyan :(
/http:\/\/[a-z0-9A-Z.]+(?(?=[\/])(.*))/

még egy kérdés :)
hogy ha www. van??:)
5

Ilyesmi

Poetro · 2011. Jún. 20. (H), 12.37
<?php
$a = array(
  'message' => ":) :D :(2 :( :P, http://weblabor.hu/",
);
$message = strtr($a['message'], array(
  "<" => "&lt;",
  ">" => "&gt;",
  ":D" => "<img src='smiley/sm01.gif' alt='sm01' />",
  ":P" => "<img src='smiley/sm02.gif' alt='sm02' />",
  ":(2" => "<img src='smiley/sm03.gif' alt='sm03' />",
  "[sm04]" => "<img src='smiley/sm04.gif' alt='sm04' />",
  ":(" => "<img src='smiley/sm05.gif' alt='sm05' />",
  ":)" => "<img src='smiley/sm06.gif' alt='sm06' />",
  "[smiley_dj]" => "<img src='smiley/sm07.gif' alt='sm07' />",
  "[smiley_drink]" => "<img src='smiley/sm08.gif' alt='sm08' />",
  "[smiley_Good_night]" => "<img src='smiley/sm09.gif' alt='sm09' />",
  "[smiley_Love]" => "<img src='smiley/sm10.gif' alt='sm10' />",
  "[smiley_Hello]" => "<img src='smiley/sm11.gif' alt='sm10' />",
));
$message = preg_replace("/
      (^|\s)                                                  # At the begining or after whitespace
      ((?:https?):\/\/                                        # Look for http or https schemes
      (?:                                                     # Userinfo (optional) which is typically
        (?:(?:[\w\.\-\+!$&'\(\)*\+,;=]|%[0-9a-f]{2})+:)*      # a username or a username and password
        (?:[\w\.\-\+%!$&'\(\)*\+,;=]|%[0-9a-f]{2})+@          # combination
      )?
      (?:
        (?:[a-z0-9\-\.]|%[0-9a-f]{2})+                        # A domain name or a IPv4 address
        |(?:\[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})\])         # or a well formed IPv6 address
      )
      (?::[0-9]+)?                                            # Server port number (optional)
      (?:[\/|\?]
        (?:[\w#!:\.\?\+=&@$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2})   # The path and query (optional)
      *))
      ($|\s)                                                  # At the end or after whitespace
    /xi", '$1<a href="$2">$2</a>$3', $message);
echo $message, "\n";
?>
<img src='smiley/sm06.gif' alt='sm06' /> <img src='smiley/sm01.gif' alt='sm01' /> <img src='smiley/sm03.gif' alt='sm03' /> <img src='smiley/sm05.gif' alt='sm05' /> <img src='smiley/sm02.gif' alt='sm02' />, <a href="http://weblabor.hu/">http://weblabor.hu/</a>
És bocs, hogy egyetlen str_replace-t sem használtam
6

hát ugy ahogy kiszedtem ami

kriszrap · 2011. Jún. 20. (H), 12.58
hát ugy ahogy kiszedtem ami nekem kell de nem jó:
$message=$a['message'];
$a = array('message' => ":) :D :(2 :( :P, http://weblabor.hu/", );
$message = strtr($a['message'], array(":D" => "<img src='smiley/sm01.gif' alt='sm01' />",));

minden hova ezt irja:
:) :D :(2 :( :P, http://weblabor.hu/
7

Fenti

Poetro · 2011. Jún. 20. (H), 13.01
A fenti kód, azt csinálja, amit te próbáltál, csak jól és áttekinthetően.
8

$message=$a['message']; $a =

kriszrap · 2011. Jún. 20. (H), 13.34

$message=$a['message'];
$a = array(
":D" => "<img src='smiley/sm01.gif' alt='sm01' />",  
":P" => "<img src='smiley/sm02.gif' alt='sm02' />",  
":(2" => "<img src='smiley/sm03.gif' alt='sm03' />",  
"[sm04]" => "<img src='smiley/sm04.gif' alt='sm04' />",  
":(" => "<img src='smiley/sm05.gif' alt='sm05' />",  
":)" => "<img src='smiley/sm06.gif' alt='sm06' />",  
"[smiley_dj]" => "<img src='smiley/sm07.gif' alt='sm07' />",  
"[smiley_drink]" => "<img src='smiley/sm08.gif' alt='sm08' />",  
"[smiley_Good_night]" => "<img src='smiley/sm09.gif' alt='sm09' />",  
"[smiley_Love]" => "<img src='smiley/sm10.gif' alt='sm10' />",  
"[smiley_Hello]" => "<img src='smiley/sm11.gif' alt='sm10' />",  
);
$message = str_replace(array_keys($a), $a, $message);
így jó és szerintem egyszerűbb:)

array_keys <------ ez a tömbök számát és tartalmát mutatja??:)
9

Te még nálam is rosszabb vagy... :)

H.Z. v2 · 2011. Jún. 20. (H), 14.08
http://hu.php.net/manual/en/function.array-keys.php
10

"Te még nálam is rosszabb

kriszrap · 2011. Jún. 20. (H), 14.11
"Te még nálam is rosszabb vagy... :)" előbb kérdezek mint hogy gondolkodnék??:D
11

Doksi olvasásra céloztam...

H.Z. v2 · 2011. Jún. 20. (H), 14.14
Doksi olvasásra céloztam... ;)
12

preg_match_all('/http:\/\/[a-

kriszrap · 2011. Jún. 20. (H), 14.53
preg_match_all('/http:\/\/[a-z0-9A-Z.]+(?(?=[\/])(.*))/', $message, $match);
ez eltudnátok magyarázni mert nem értem :D mire jó??:) meg a karaktereket milyen szempontok szerint írjátok,?
13

Reguláris kifejezések

Poetro · 2011. Jún. 20. (H), 16.45
A fenti egy reguláris kifejezés, ami egy nyelv önmagában. Vannak róla könyvek, de az igazi elsajátításhoz hónapok kellenek.
14

van egy pici hiba:(ha 1nél

kriszrap · 2011. Jún. 22. (Sze), 03.32
sziasztok
tudnátok ebbe segíteni ??:)
nem nagyon értem ezt a karakter bigyulát.
Annyi hogy ha linkel valaki egy képet meg mutatja a képet a chatbe:)
ha link elé írok valamit vagy mögé akkor már link hibás lesz és igy nem tudja megjeleníteni a képet vagy is a beírt szöveg a linkben lesz .

$pattern = '/http:\/\/[a-z.]+[a-z0-9A-Z.]+(?(?=[\/])(.*)(gif||jpg||png))/';
$replace = '<img height="100" src="$0">';
$message = preg_replace($pattern, $replace, $message);
15

saját módszer

Poetro · 2011. Jún. 22. (Sze), 03.40
Akkor írd meg saját módszerrel. Használd a string függvényeket, hogy megkeresd a http:// részt a szövegben, majd addig menj utána a következő karakterekre, amíg nem kapsz olyat, ami nem szerepelhet URL-ben. Ha ez megvan, akkor megnézed, hogy az utolsó 3 karakter esetleg nem-e .gif, .jpg vagy .png. Egyébként nem kellene már aludnod?
16

Hát nem voltam álmost azt

kriszrap · 2011. Jún. 22. (Sze), 11.14
Hát nem voltam álmost azt addig a honlapomon dolgoztam.
na mind1.
Meik az a parancs amivel ezt megtudnám valósítani??:)
csak a parancsra vok kiváncsi többivel sztem elküzködöm:)
17

strpos, substr

Poetro · 2011. Jún. 22. (Sze), 11.45
18

parse_str(parse_url($url,

kriszrap · 2011. Jún. 22. (Sze), 23.21
parse_str(parse_url($url, PHP_URL_QUERY), $qstring); ezzel is megoldható és egyszerűbb??
19

mystring = $message;$findme

kriszrap · 2011. Jún. 22. (Sze), 23.40

mystring = $message;
$findme   = 'http://';
$pos = strpos($mystring, $findme);


if ($pos !== false) {
    $message = substr($message,0,$pos).'<img height="100" src="'.substr($message, $pos).'">';

}
nem tom a link végét meghatározni.
nem tom hogy ellenőrizzem hogy hol a vége.
20

nem lehet

Poetro · 2011. Jún. 23. (Cs), 00.08
Olyan karaktert kell keresni a $pos után a $message-ben, ami nem lehet a link része, például egy szóköz vagy újsor.
21

így próbáld

pkadam · 2011. Jún. 23. (Cs), 00.20
$message = 'További információ a http://www.example.com/ weboldalon.';

$start = strpos($message,'http://');
$end = strpos(substr($message,$start),' ');

echo substr($message,0,$start);
echo '<a href="' . substr($message,$start,$end) . '">' . substr($message,$start,$end) . '</a>';
echo substr($message,$start+$end);
a link vége a szóköznél lesz. (persze lehet, hogy épp a sor végén lesz, de a fenti kódból már ki tudsz indulni.)

UPDATE: Közben Poetro beelőzött, de legalább kaptál kódot. Nyilván eljátszhatsz még azzal, hogy www-re keresel, és ellenőrzöd, hogy nincs-e előtte http://.
22

na pár kérdésem lenne de

kriszrap · 2011. Jún. 23. (Cs), 01.54
na pár kérdésem lenne
de előtte.

$end = strpos(substr($message,$start),' ','<br />'); hogy tudnám hogy mindkettőt figyelembe vegye??
A másik kérédesm:)
ez a sima www. kiküszöbölése hogyan csináljam??
23

inkább privátban

pkadam · 2011. Jún. 23. (Cs), 02.30
inkább privátban küldd, és kicsit kerekebben fogalmazva (a második részét legalábbis).
24

Sikerült !!! Egy utolsó

kriszrap · 2011. Jún. 24. (P), 22.35
Sikerült !!!
Egy utolsó megoldás szeretnék kérni youtube.com linkre (beágyazás).
találtam egy ilyen link embed convertert link: http://www.phpfreaks.com/forums/index.php?topic=254398.0
<?php
$url = 'http://www.youtube.com/watch?v=wTnChGG2CM0';

parse_str(parse_url($url, PHP_URL_QUERY), $qstring);

echo <<<EOF
<object width="425" height="344">
	<param name="movie" value="http://www.youtube.com/v/{$qstring['v']}&hl=en&fs=1"></param>
	<param name="allowFullScreen" value="true"></param>
	<param name="allowscriptaccess" value="always"></param>
	<embed src="http://www.youtube.com/v/{$qstring['v']}&hl=en&fs=1"
	       type="application/x-shockwave-flash"
	       allowscriptaccess="always"
	       allowfullscreen="true"
	       width="425"
	       height="344"></embed>
</object>
EOF;
?> 
ez eddig jó :)
csak annyi baj hogy ajaxos chat frissítésem van és 5 másodpercenként frissít a chat nem teljes tartalmát. Ha beágyazom a videot a chatbe akkor az embed rész frissíti.
ajax frissítésem:

function chat_ellenorzes()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("chatBox").innerHTML=xmlhttp.responseText+document.getElementById("chatBox").innerHTML;  
    }
  }
xmlhttp.open("GET","chat_frisites.php",true);
xmlhttp.send(null);
}
setInterval('chat_ellenorzes()', 5000);


hogy lehet ki küszöbölni??:)
25

Ne az egészet

Poetro · 2011. Jún. 24. (P), 22.52
Úgy, hogy nem az egészet írod felül, hanem csak az új elemeket szúrod be. Ajánlom figyelmedbe az appendChild és az insertBefore függvényeket, vagy hogy könnyebbé tegyed a munkádat, egy JavaScript keretrendszer használatát. És ezeknek semmi köze a PHP-hoz, illetve a fent tárgyalt kérdéshez.
26

Tudom hogy nincs semmi köze a

kriszrap · 2011. Jún. 27. (H), 00.43
Tudom hogy nincs semmi köze a topikhoz csak már annyi topikot nyitottam :)

szerk.:
appendChild és az insertBefore ezek amúgy mire jók??
28

így se értem sajna:( írnátok

kriszrap · 2011. Jún. 27. (H), 20.27
így se értem sajna:( írnátok egy kódot úgy könnyebb lesz sztem.
ha valaki ír nekem egyet nagyon meg köszönöm.
29

MDC

Poetro · 2011. Jún. 27. (H), 20.51
A hozzászólásomban levő MDN oldalakon mindkét függvényt kóddal együtt mutatják be.
30

node.appendChild(newnode); <p

kriszrap · 2011. Jún. 27. (H), 22.24
node.appendChild(newnode);
<p>Love always</p>
<p>Love always wins</p>
na ezeket hova rakja??
31

Azon elem zárótagje elé,

pkadam · 2011. Jún. 27. (H), 22.54
Azon elem zárótagje elé, amelyikre alkalmazod.
32

fúú ezt holtra nem értem:(

kriszrap · 2011. Jún. 27. (H), 23.31
fúú ezt holtra nem értem:(
33

Például egy div-re alkalmazva

pkadam · 2011. Jún. 28. (K), 00.00
Például egy div-re alkalmazva a </div> elé teszi a forráskódba. Ha a <div>Hello, World!</div>-re alkalmazol egy appendChildot (mondjuk egy bekezdést adsz hozzá), akkor a böngésző azt <div>Hello, World!<p>Beillesztett tartalom</p></div>-ként jeleníti meg.
34

<html><head></head><body>

kriszrap · 2011. Jún. 28. (K), 12.31

<html>
<head>
</head>
<body>
appendChildot (szoveg);
<div id="szoveg">
<p>ja</p>
</div>
</body>
</html>
igy?? vagy ki hagytam sok mindent??
35

A végeredmény hasonló lesz, igen

pkadam · 2011. Jún. 28. (K), 17.18
A végeredmény hasonló lesz, igen. Igaz, az 5. sor nem tudom mit keres ott... Hogy ezt elérd, nyilván egy <script> kódblokkban kell megadnod, amit végre akarsz hajtatni.
<div id="szoveg">szöveg</div>

<script language="javascript">
	newElement = document.createElement('p');
	newElement.setAttribute('style','background:yellow');
	newElement.innerHTML = 'beillesztve';
	document.getElementById('szoveg').appendChild(newElement);
</script>
36

vagy is a div be beszúrja a

kriszrap · 2011. Júl. 1. (P), 02.18
appendChild az a div végére illeszt?? Ahogy észre vettem.
37

Ha már magad is észrevetted...

pkadam · 2011. Júl. 1. (P), 02.48
...akkor mi a kérdés? (Sőt, pontosan le is írtam pár kommenttel feljebb.) Apropó, ha már harmadszor írod át a teljes hozzászólásod, legalább a tárgya passzoljon a tartalomhoz ;)

Ja, és még annyi: ha már a teljesen megírt linkesítős forráskódot elküldtem Neked privátban, akkor lehet, hogy bölcs dolog lett volna a "Sikerült !!!" mellé legalább egy köszönömöt is böffenteni.
38

Nyitok egy új

kriszrap · 2011. Júl. 11. (H), 23.30
Nyitok egy új topikot:)
Köszönöm szépen a a segítségeteket:)