如何从textarea中用新行分隔的项目制作数组?

时间:2015-11-05 08:51:02

标签: javascript jquery arrays

我有一个标识为#list的文本区:

$text = $('#list').val();

我需要爆炸并将这个文本创建成碎片并将每个碎片作为一个新项目放入数组中,因此,我可以将此数组发送到PHP并在foreach循环中使用它(我希望该数组在PHP中将是相同的,ajax将不会再次从它创建一个json或字符串;)

顺便说一下。列表是网址,所以我想用新的行http://或空格分隔它们?

怎么做?

更新:

所以,当我从textarea获得这样的值时:

var listURLs = $('#list').val();

当我在textarea中插入这样的内容时:

asdfasd

adsf





fr
f
如果我在PHP中执行此操作,则通过ajax访问PHP:

$listURLs = $_POST['listURLs'];

$arrayURLs = explode("\r\n", $listURLs);

print_r($arrayURLs);

die();

我会得到:

Array
(
    [0] => asdfasd

    adsf





    fr
    f
)

1 个答案:

答案 0 :(得分:4)

在你的PHP中你可以做到

function CreateFadedIcon(Icon: HICON): HICON;

type
  TRGBA = record
    B,G,R,A: Byte
  end;

  procedure InitialiseBitmapInfoHeader(Width, Height: Integer; var bih: BITMAPINFOHEADER);
  begin
    bih.biSize := SizeOf(BITMAPINFOHEADER);
    bih.biWidth := Width;
    bih.biHeight := 2*Height;//height of xor bitmap plus height of and bitmap
    bih.biPlanes := 1;
    bih.biBitCount := 32;
    bih.biCompression := BI_RGB;
  end;

  procedure CreateXORbitmap(const sbih, dbih: BITMAPINFOHEADER; sptr, dptr: PDWORD);
  var
    i, j: Integer;
  begin
    for i := 0 to sbih.biHeight-1 do begin
      for j := 0 to sbih.biWidth-1 do begin
        dptr^ := sptr^;
        TRGBA(dptr^).A := TRGBA(dptr^).A div 3;
        inc(dptr);//relies on the fact that no padding is needed for RGBA scanlines
        inc(sptr);//likewise
      end;
    end;
  end;

var
  IconInfo: TIconInfo;
  sBits, xorBits: PDWORD;
  xorScanSize, andScanSize: Integer;
  xorBitsSize, andBitsSize: Integer;
  sbih: BITMAPINFOHEADER;
  dbih: ^BITMAPINFOHEADER;
  resbitsSize: DWORD;
  resbits: Pointer;

begin
  Result := 0;
  Try
    if not GetIconInfo(Icon, IconInfo) then begin
      exit;
    end;
    Try
      GetDIBheaderAndBits(IconInfo.hbmColor, sbih, Pointer(sBits));
      if Assigned(sBits) then begin
        Try
          if (sbih.biPlanes<>1) or (sbih.biBitCount<>32) then begin
            exit;
          end;

          xorScanSize := BytesPerScanline(sbih.biWidth, 32, 32);
          Assert(xorScanSize=SizeOf(DWORD)*sbih.biWidth);
          andScanSize := BytesPerScanline(sbih.biWidth, 1, 32);
          xorBitsSize := sbih.biHeight*xorScanSize;
          andBitsSize := sbih.biHeight*andScanSize;
          resbitsSize := SizeOf(BITMAPINFOHEADER) + xorBitsSize + andBitsSize;
          resbits := AllocMem(resbitsSize);//AllocMem zeroises the memory
          Try
            dbih := resbits;
            InitialiseBitmapInfoHeader(sbih.biWidth, sbih.biHeight, dbih^);

            xorBits := resbits;
            inc(PByte(xorBits), SizeOf(BITMAPINFOHEADER));
            CreateXORbitmap(sbih, dbih^, sBits, xorBits);

            //don't need to fill in the mask bitmap when using RGBA
            Result := CreateIconFromResourceEx(resbits, resbitsSize, True, $00030000, sbih.biWidth, sbih.biHeight, LR_DEFAULTCOLOR);
          Finally
            FreeMem(resbits);
          End;
        Finally
          FreeMem(sBits);
        End;
      end;
    Finally
      if IconInfo.hbmMask<>0 then begin
        DeleteObject(IconInfo.hbmMask);
      end;
      if IconInfo.hbmColor<>0 then begin
        DeleteObject(IconInfo.hbmColor);
      end;
    End;
  Finally
    DestroyIcon(Icon);
  End;
end;

和jquery

$lines = explode("\r\n", $_POST['list']);